import { asyncRoutes, constantRoutes } from '@/router'

const state = {
  routes: constantRoutes // 所有用户默认拥有静态路由权限
}
const mutations = {
  // 合并静态路由和当前用户拥有的动态路由模块,一起赋值给state里面的routes数组
  // newRoutes拥有的动态路由数组
  setRoutes(state, newRoutes) {
    state.routes = [
      ...constantRoutes,
      ...newRoutes
    ]
  }
}

// menus: ['permissioin', 'settings', ...]
// menus经过筛选之后，得到动态路由组成的数组
const actions = {
  filterRoutes(ctx, menus) {
    // menus和所有的动态路由数组进行匹配，得到当前用户拥有的动态路由数组
    const newRoutes = asyncRoutes.filter(item => {
      // 判断menus里面是否包含当前路由对象的name值
      return menus.includes(item.name)
    })
    // 动态路由和静态路由合并赋值给state里面的routes
    ctx.commit('setRoutes', newRoutes)
    // 当前用户真正拥有的权限的动态路由数组
    console.log(newRoutes)
    // 返回去之后调用的地方需要进行动态路由添加
    return newRoutes
  }
}

export default {
  namespaced: true,
  state,
  actions,
  mutations
}
